package com.qf.springboottest.controller;

import lombok.extern.slf4j.Slf4j;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;

/**
 * 用于处理文件、图片下载请求的controller
 */
@RestController
@Slf4j
public class DownloadController {

    // 处理文件上传路径，使用依赖注入从propeties文件中获取配置
    // 如果想通过依赖注入把配置文件中属性注入进来需要在beans.xml中加配置文件参数化,同时也需在控制器层的mvc.xml配置文件中加入
    @Value("${file.path}")
    String fileUploadPath;

    @GetMapping("/download")
    public void download(String filename, HttpServletResponse response) throws IOException {

        //1.打印日志
        log.debug("下载导出的文件:{}",filename);

        //2.定位要下载的文件的绝对路径
        String finalFilepath = fileUploadPath + filename;

        //3.让浏览器以附件的形式下载文件
        response.setHeader("content-disposition","attachment;filename="+filename);

        //4.把文件内容写入响应对象的输出流中 IOUtils.copy
        IOUtils.copy(new FileInputStream(finalFilepath),response.getOutputStream());
    }
}


























